package ide.vista;

import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

@SuppressWarnings("serial")
public class EditorTextArea extends JPanel {

    private final JTextArea textArea;
    private final JScrollPane scroll;
    private final JButton botonCerrar;
    private String rutaDelArchivoAsociado;
    private IndicadorDeDirecciones direcciones;
    //private String titulo;

    public EditorTextArea(String contenido, JButton cerrar) {
    	super(new GridLayout(1, 1) );
    	
    	textArea = new JTextArea();
    	textArea.setEditable(true);
    	textArea.setFont(new Font("Consolas", Font.PLAIN , 14));
		textArea.setText(contenido);
		textArea.setLineWrap(false);
		
		this.scroll = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
				JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    	
    	direcciones = new IndicadorDeDirecciones(textArea);
    	scroll.setRowHeaderView(direcciones);
    	add(scroll);
    	
    	botonCerrar = cerrar;
    }

    public void setText(String text) {
        textArea.setText(text);
    }

    public String getText() {
        return textArea.getText();
    }
    
    public JScrollPane getScroll(){
    	return scroll;
    }
    
    public JButton getBotonCerrar(){
    	return botonCerrar;
    }
    
    public void setRutaDelArchivoAsociado(String ruta){
    	rutaDelArchivoAsociado = ruta;
    }
    
    public String getRutaDelArchivoAsociado(){
    	return rutaDelArchivoAsociado;
    }
    
    public String getNombreDeArchivo(){
    	return extraerNombreDeArchivo(rutaDelArchivoAsociado);
    }
    
    public String getExtensionDeArchivo(){
    	return extraerExtensionDeArchivo(rutaDelArchivoAsociado);
    }
    
    private String extraerNombreDeArchivo(String ruta){
    	
    	String nombre = "";
    	boolean finNombre = false;
    	char c;
    	int i = 1;
    	while(!finNombre){
    		c = ruta.charAt(ruta.length() - i);
    		if(c == '\\' || c == '/' ){
    			finNombre = true;
    		}else{
    			nombre = c + nombre;
    		}
    		i++;
    	}
    	return nombre;
    }
    
    private String extraerExtensionDeArchivo(String ruta){
    	String extension = "";
    	boolean finExtension = false;
    	char c;
    	int i = 1;
    	while(!finExtension){
    		c = ruta.charAt(ruta.length() - i);
    		if(c == '.'){
    			finExtension = true;
    		}else{
    			extension = c + extension;
    		}
    		i++;
    	}
    	return extension;
    }
}
